package utils

import (
	"html/template"
	"time"
)

func UUID(length int64) string {
	panic("only invoke in kagura")
}

func Random(strings []string) []string {
	panic("only invoke in kagura")
}

func CompressedContent(h *template.HTML) {
	panic("only invoke in kagura")
}

func ReplaceNth(s, old, new string, n int) string {
	panic("only invoke in kagura")
}

func InArray(arr []string, str string) bool {
	panic("only invoke in kagura")
}

func WrapURL(u string) string {
	panic("only invoke in kagura")
}

func JSON(a interface{}) string {
	panic("only invoke in kagura")
}

func ParseBool(s string) bool {
	panic("only invoke in kagura")
}

func ReplaceAll(s string, oldnew ...string) string {
	panic("only invoke in kagura")
}

func PackageName(v interface{}) string {
	panic("only invoke in kagura")
}

func ParseFloat32(f string) float32 {
	panic("only invoke in kagura")
}

func SetDefault(value, condition, def string) string {
	panic("only invoke in kagura")
}

func AorB(condition bool, a, b string) string {
	panic("only invoke in kagura")
}

func IsJSON(str string) bool {
	panic("only invoke in kagura")
}

func CopyMap(m map[string]string) map[string]string {
	panic("only invoke in kagura")
}

func ParseTime(stringTime string) time.Time {
	panic("only invoke in kagura")
}

func ParseHTML(name, tmpl string, param interface{}) template.HTML {
	panic("only invoke in kagura")
}

func ParseText(name, tmpl string, param interface{}) string {
	panic("only invoke in kagura")
}

func CompareVersion(src, toCompare string) bool {
	panic("only invoke in kagura")
}

const (
	Byte  = 1
	KByte = Byte * 1024
	MByte = KByte * 1024
	GByte = MByte * 1024
	TByte = GByte * 1024
	PByte = TByte * 1024
	EByte = PByte * 1024
)

// FileSize calculates the file size and generate user-friendly string.
func FileSize(s uint64) string {
	panic("only invoke in kagura")
}

func FileExist(path string) bool {
	panic("only invoke in kagura")
}

// TimeSincePro calculates the time interval and generate full user-friendly string.
func TimeSincePro(then time.Time, m map[string]string) string {
	panic("only invoke in kagura")
}

// Seconds-based time units
const (
	Minute = 60
	Hour   = 60 * Minute
	Day    = 24 * Hour
	Week   = 7 * Day
	Month  = 30 * Day
	Year   = 12 * Month
)

func DownloadTo(url, output string) error {
	panic("only invoke in kagura")
}

func UnzipDir(src, dest string) error {
	panic("only invoke in kagura")
}
